package thread;

/**
 * 多线程用于并发执行多个任务
 * 多线程的创建方式有两种:
 * 1:继承Thread并重写run方法
 */
public class ThreadDemo1 {
    public static void main(String[] args) {
        Thread t1 = new MyThread1();
        Thread t2 = new MyThread2();
        /*
            注意，启动线程要调用start方法，而非直接调用run方法。
            当start调用后，线程便纳入到线程调度器中统一管理，当第一次获取时间片时
            线程的run方法会被自动调用。
         */
        t1.start();
        t2.start();

    }
}

/**
 * 第一种创建线程的方式优点是结构简单，适合使用匿名内部类形式创建。
 * 缺点:
 * 1:由于java是单继承的，这导致如果继承了Thread就无法再继承其他类了，实际开发中
 *   很不方便。
 * 2:定义线程的同时重写了run方法将线程的任务定义在了线程中，导致线程与任务存在一个
 *   必然的耦合关系，不利于线程的重用。
 */
class MyThread1 extends Thread{
    public void run(){
        for(int i=0;i<1000;i++){
            System.out.println("你是谁啊?");
        }
    }
}

class MyThread2 extends Thread{
    public void run(){
        for(int i=0;i<1000;i++){
            System.out.println("我是查水表的!");
        }
    }
}




